#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
// 求两个数二进制中不同位的个数
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int count = 0;
//	scanf("%d %d", &a, &b);
//
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if ((a >> i & 1) != (b >> i & 1))
//		{
//			count++;
//		}
//	}
//
//	printf("%d", count);
//
//	return 0;
//}



//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	// 获取n的2进制中的奇数位和偶数位
//	int i = 0;
//	// 打印奇数位
//	for (i = 31; i >= 1; i -= 2) //从左数第1位开始逐2递增的 打印
//	{
//		printf("%d ", (n >> i) & 1);
//	}
//	printf("\n");
//	// 打印偶数位
//	for (i = 30; i >= 0; i -= 2) //从左数第2位开始逐2递增的 打印
//	{
//		printf("%d ", (n >> i) & 1);
//	}
//
//	return 0;
//}

//int main()
//{
//	printf("%d\n", sizeof(char*));
//	printf("%d\n", sizeof(short*));
//	printf("%d\n", sizeof(int*));
//	printf("%d\n", sizeof(double*));
//
//	return 0;
//}

//int main()
//{
//	int a = 0x11223344;
//	int* pa = &a;
//	char* pc = &a;
//	printf("%p\n", pa);
//	printf("%p\n", pc);
//
//	return 0;
//}

//int main()
//{
//	int a = 0x11223344;
//	int* pa = &a;
//	char* pc = &a;
//
//	printf("%p\n", pa);   // 0095FB58
//	printf("%p\n", pa + 1); // 0095FB5C +4
//
//	printf("%p\n", pc);   // 0095FB58
//	printf("%p\n", pc + 1); // 0095FB59 +1
//
//	return 0;
//}

//int main()
//{
//	int a;//局部变量不初始化默认为随机值
//	printf("%d", a);
//
//	return 0;
//}

//int main()
//{
//	int* p; //局部的指针变量，就被初始化随机值
//	*p = 20; //内存中随便找个地址存进去
//
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	int i = 0;
//	for (i = 0; i < 12; i++)
//	{
//		//当指针越出arr管理的范围时，p就称为野指针
//		p++;
//	}
//
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = &arr[9]; // 取出数组最后一个元素的地址
//
//	for (i = 0; i < sz / 2; i++) {
//		printf("%d ", *p);
//		p = p - 2;
//	}
//	return 0;
//}
//
//#include <stdio.h>
//#define N_VALUES 5
//
//int main() {
//	float value[N_VALUES];
//	float* vp;
//
//	for (vp = &value[0]; vp < &value[N_VALUES];) {
//		*vp++ = 0;
//		printf("%d ", *vp);
//	}
//
//	return 0;
//}
//int main()
//{
//	int ch[5] = { 0 };
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%d\n", &arr[9] - &ch[0]); // 没有意义，结果是不可预知的
//
//	return 0;
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;  // 这时arr数组就可以通过指针进行访问了
//	int i = 0;
//
//
//	for (i = 0; i < 10; i++) {
//		*(p + i) = 8; // p+1=1, p+2=2, p+3=3...
//	}
//	for (i = 0; i < 10; i++) {
//		printf("%d ", *(p + i));
//	}
//
//	return 0;
//}

#include<string.h>

//int main()
//{
//	char arr1[] = "abcdefgh";
//	char arr2[] = "xxxxxx";
//	strcpy(arr1, arr2);
//
//	printf("%s", arr1);
//
//	return 0;
//}               目的数组    源数组
//char* my_strcpy(char* arr1, char* arr2)
//{
//	char* start = arr1;
//
//	while (*arr2 != '\0')
//	{
//		*arr1 = *arr2;
//		arr1++;
//		arr2++;
//	}
//
//	*arr1 = *arr2;
//
//	return start;
//}
//
//i\t main()
//{
//	char arr1[] = "abcdefgh";
//	char arr2[] = "xxxxxxx";
//
//	my_strcpy(arr1, arr2);//arr1为目标数组 arr2为源数组
//
//	printf("%s", arr1);
//	return 0;
//}



//char* my_strcpy(char* arr1, const char* arr2)
//{
//	char* start = arr1;
//
//	while (*arr1++ = *arr2++)
//	{
//
//	}
//
//
//
//	return start;
//}
//
//int main()
//{
//	char arr1[] = "abcdefgh";
//	char arr2[] = "xxxxxxx";
//
//	my_strcpy(arr1, arr2);//arr1为目标数组 arr2为源数组
//
//	printf("%s", arr1);
//	return 0;
//}

//int main()
//{
//	int a = 1;
//	char* pa = &a;
//
//	if (*pa == 1)
//	{
//		printf("小端存储\n");
//	}
//	else
//		printf("大端存储\n");
//
//
//
//	return 0;
//}

int main()
{
	char a = -1;
	signed char b = -1;
	unsigned char c = -1;
	printf("a=%d, b=%d, c=%d", a, b, c);

	return 0;
}